package com.briup.product_source.service.impl;

import com.briup.product_source.dao.IssueRecordMapper;
import com.briup.product_source.dao.ManagerFenceHouseMapper;
import com.briup.product_source.service.AnalysisService;
import com.briup.product_source.service.ManagerFenceHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * @Author lining
 * @Date 2023/6/21
 */
@Service
public class AnalysisServiceImpl implements AnalysisService {
    @Autowired
    private ManagerFenceHouseMapper fenceHouseMapper; //栏舍映射器
    @Autowired
    private IssueRecordMapper issueRecordMapper;
    public Map<String, List<Object>> countNum() {
        /*
        *  name : 字符串   name  value
        *  value: 集合对象  多个类型  多个数量
        *
        *
        * */
        //1.创建一个集合对象表示多个类型
        List<String> types = Arrays.asList("栏舍", "栏圈", "动物", "冷库", "员工");
        //2.查询每个类型对应数量： 一次查询出所有结果
        List<Integer> nums = fenceHouseMapper.countMany();
        //3.创建map对象保存信息
        Map map = new HashMap();
        map.put("name",types);
        map.put("value",nums);
        return map;
    }
    // 统计每个月的销售数量
    public Map<String, List<Object>> countSales() {
        /*
        * key : name value
        *
        * value 集合对象 月份信息   数量信息
        *
        *
        * */

        List<String> types = Arrays.asList("1月","2月", "3月","4月",
                                            "5月","6月","7月","8月",
                                            "9月","10月","11月","12月");
        //2.到数据库查询每个月的销量

        List<Map<String, Integer>> list = issueRecordMapper.count();
        System.out.println(list);
        //创建集合对象 保存 1-12月数据
        ArrayList<Integer> values = new ArrayList<>();
        for (int i = 1; i <= 12; i++) {
            values.add(0);
        }
        //将查询到list集合数据填充到指定的values集合中
        //month表示数量所在位置 从0开始
        //思路：是否可以减少循环次数
        for (int month = 0;month < values.size();month++) {
            for (Map<String,Integer> m:list) {
                //如果当前位置对应该月份
                if(month+1 == m.get("month")){
                    //将指定的数量存在指定位置中
                    values.add(month,m.get("num"));
                }
            }
        }
        Map map = new HashMap();
        map.put("name",types);
        map.put("value",values);
        return map;
    }

    public Map<String, Integer> countWeight() {
        return null;
    }

    public Map<String, Integer> countDisease() {
        return null;
    }
}
